package cn.dkdoo.utils.config.traNo;

import cn.dkdoo.utils.common.ThreadLocalPool;
import cn.dkdoo.utils.config.transactionInfo.TransactionInfoDefault;

/**
 * @author nicky
 * @date 2021/5/11 上午10:21
 */
public interface TraNoBuild {
    /**
     * fdfds
     * 获取事物号
     *
     * @returnasd
     */
    String buildTraNo();

    static boolean startTra(TraNoBuild traNoBuild) {
        String curTraNo = traNoBuild.buildTraNo();
        if (curTraNo == null) {
            return false;
        }
        //todo 和web_api确定，是否同一个事物号会多个接口公用，如果是，则需要查回旧的数据
        ThreadLocalPool.TRA_NO_MANAGER.bindToThread(curTraNo);
        TransactionInfoDefault curTroInfo = new TransactionInfoDefault(true, curTraNo);
        ThreadLocalPool.TRAINFO_MANAGER.bindToThread(curTroInfo);
        return true;
    }
}
